define(function(){
	var DomList=function (config){
		var domList=this;
		domList.$dom=$('<ul></ul>');
		domList.liList={};
		domList.liIdIndex=0;
		domList.liUpdate=function(){};
		if(config.ul!==undefined){
			if(config.ul.className!==undefined){
				domList.$dom.attr('class',config.ul.className);
			}
		}
		if(config.li!==undefined){
			if(config.li.update!==undefined){
				domList.liUpdate=config.li.update;
			}
		}
		function LiDom(liData){
			var liDom=this;
			liDom.$dom=$('<li></li>');
			if(liData.id!==undefined){
				liDom.id=liData.id;
			}else{
				liDom.id=domList.liIdIndex;
				domList.liIdIndex++;
			}
			liDom.update=function(newLiData){
				domList.liUpdate(liDom.$dom,newLiData);
			}
			liDom.update(liData);
			domList.liList[liDom.id]=liDom;
		}
		function addLi(liData,isPrepend){
			var liDom=new LiDom(liData);
			if(isPrepend){
				liDom.$dom.prependTo(domList.$dom)
			}else{
				liDom.$dom.appendTo(domList.$dom)
			}
		}
		domList.appendLi=function(){
			var liDataList=Array.prototype.slice.call(arguments);
			$.each(liDataList, function(i,liData) {
				addLi(liData);
			});

		}
		domList.clear=function(){
			domList.$dom.html('');
			domList.liList=[];
			domList.liIdIndex=0;
		}
		if(config.li.dataList!==undefined){
			domList.appendLi.apply(domList.appendLi,config.li.dataList);
		}

	}
	window.DomList=DomList;
	return DomList;
})
